#!/bin/bash

source config.sh

# Docker 一键安装脚本 (使用国内镜像源)
# 功能: 检查并安装Docker，配置自动启动，验证安装

# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
  echo -e "${RED}错误: 此脚本需要root权限. 请使用sudo运行.${NC}" >&2
  exit 1
fi

# 函数: 检查命令是否存在
command_exists() {
  command -v "$@" >/dev/null 2>&1
}

# 函数: 安装Docker (使用国内镜像)
install_docker() {
  echo -e "${YELLOW}开始使用国内镜像安装Docker...${NC}"

  # 使用阿里云镜像安装Docker
  curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  if command_exists docker; then
    echo -e "${GREEN}Docker 安装成功!${NC}"
  else
    echo -e "${RED}Docker 安装失败!${NC}" >&2
    exit 1
  fi
}

# 函数: 配置Docker
configure_docker() {
  echo -e "${YELLOW}配置Docker...${NC}"

  # 启动Docker服务
  systemctl start docker

  # 设置开机自启
  systemctl enable docker

  # 将当前用户加入docker组(避免每次使用sudo)
  if [ "$SUDO_USER" ]; then
    usermod -aG docker "$SUDO_USER"
    echo -e "${GREEN}已将用户 $SUDO_USER 添加到docker组.${NC}"
    echo -e "${YELLOW}注意: 需要重新登录才能使组更改生效.${NC}"
  fi

  # 验证Docker运行状态
  if systemctl is-active --quiet docker; then
    echo -e "${GREEN}Docker 服务正在运行.${NC}"
  else
    echo -e "${RED}Docker 服务未运行!${NC}" >&2
    exit 1
  fi
}

# 配置Docker镜像加速
configure_docker_mirror() {
    if ! grep -q "registry-mirrors" /etc/docker/daemon.json 2>/dev/null; then
        echo -e "${YELLOW}配置Docker国内镜像加速...${NC}"
        sudo mkdir -p /etc/docker
        sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["${REGISTRY_MIRROR}"]
}
EOF
        sudo systemctl daemon-reload
        sudo systemctl restart docker
        sleep 3
    fi
}

# 主执行流程
echo -e "${YELLOW}检查Docker是否已安装...${NC}"

if command_exists docker; then
  echo -e "${GREEN}Docker 已安装:${NC}"
  docker version
  echo -e "${YELLOW}检查Docker服务状态...${NC}"
  if systemctl is-active --quiet docker; then
    echo -e "${GREEN}Docker 服务正在运行.${NC}"
  else
    echo -e "${YELLOW}Docker 服务未运行，尝试启动...${NC}"
    systemctl start docker
  fi
else
  echo -e "${YELLOW}Docker 未安装，开始安装过程...${NC}"
  install_docker
  configure_docker
  configure_docker_mirror
  echo -e "${GREEN}安装完成，Docker版本信息:${NC}"
  docker version
fi

echo -e "${GREEN}脚本执行完成!${NC}"